# qteasy金融历史数据管理 `qteasy` 是一套功能全面的量化交易工具包,金融数据的获取和使用是`qteasy`提供的核心功能之一。 ## 总体介绍 目前,网上有很多不同的金融数据获取渠道,可供量化交易者下载金融数据,但是直接从网上下载数据,有许多缺点: - 数据格式不统一:同样的数据,例如交易量数据,有些渠道提供的数据单位为“手”,而另一些提供的数据为“股” - 可提取的数据量有限:尤其是通过爬虫获取的数据,高频K线数据往往只有过去几天的数据,更久以前的数据无法提供 - 数据提取不稳定:数据提取速度和成功率不能保证,受网络连接影响很大 - 下载成本较高:收费数据渠道往往能提供更全面的数据,但是一般都有流量限制,而免费渠道提供的数据不全,也提高成本 - 信息提取不易:获得原始数据以后,还需要进一步将数据转化为需要的信息,这个过程费力且不直观 `qteasy`就是为了解决上面提到的这些痛点而设计的。 `qteasy`的金融数据管理模块提供了三个主要的功能,这三个功能的设计,着眼点都是为了 - **数据拉取**:从多个不同的网络数据提供商拉取多种金融数据,满足不同用户的使用习惯: `qteasy`提供的数据拉取API具备强大的多线程并行下载、数据分块下载、下载流量控制和错误延时重试功能,以适应不同数据供应商各种变态的流量限制,同时数据拉取API可以方便地定期自动运行完成数据批量下载任务,不用担心错过高频数据。 - **数据清洗和存储**:标准化定义本地数据存储,将从网络拉取的数据清洗、整理后保存到本地数据库中: `qteasy`定义了一个专门用于存储金融历史数据的`DataSource`类,并以标准化的形式预定义了大量金融历史数据存储表,不管数据的来源如何,最终存储的数据始终会被清洗后以统一的格式存储在`DataSource`中,避免不同时期不同来源的数据产生偏差,确保数据高质量存储。同时提供多种存储引擎,满足不同用户的使用习惯。 - **信息提取和使用**:区分“数据“和”信息,“提供接口将集中在数据表中的真正有意义的信息提取出来,从而直接用于交易策略或数据分析: 我们知道”数据“并不等于”信息“,光是将数据表保存在本地不代表立即就能使用其中的信息。而`qteasy`特意将数据表中的可用“信息”以标准化的方式定义为`DataType`对象,简化数据访问过程和策略的定义过程,统一的API使得获取信息的过程变得更加直接和友好 总体来说,`qteasy`的数据获取模块的结构可以用下面的示意图来表示: `QTEASY`数据管理模块: ![数据获取模块结构](img/Overview.png) 如图所示,`qteasy`的数据功能分为三层,第一层包括多种数据下载接口,用于从网络数据提供商获取数据,这个过程称为`DataFetching`。第二层是`qteasy`的核心功能之一,定义了一个本地数据库用于存储大量的数据表,并且支持多种数据引擎,这一层的核心是`DataSource`类,第三层是数据应用层,将数据表中有意义的信息提取出来定义为`DataType`对象,提取数据的过程被称为`Information Extraction`。而这个`DataType`对象在`qteasy`内部被广泛使用,创建交易策略,进行数据分析、可视化等后续的一切工作,都是以DataType对象为基础进行的。 正因为金融数据在量化交易过程中的重要性,从下一章节开始,我们将按以下顺序详细介绍 qteasy 数据功能的所有功能模块(阅读顺序与文件名编号一致,2 → 2.5 → 2.6 → 3 → … → 10): - **2. DataType 对象与所有数据类型**——信息与数据的区别、DataType 对象、所有内置数据类型清单 - **2.5. HistoryPanel(历史数据面板)**——多标的、多指标、时间对齐的三维容器;与 `get_history_data` 的配合及常用切片 - **2.6. HistoryPanel 可视化**——`HistoryPanel.plot()` 静态图与交互图、布局与可选依赖 - **3. 本地数据源 DataSource**——DataSource 对象与基本操作 - **4.~9. 内置数据表**——各数据表的结构与用途 - **10. 数据拉取与渠道**——从不同渠道拉取并填充数据